package beanstao.util.io.chars;

import java.io.Reader;
import java.util.List;
import java.util.Set;

import beanstao.util.collections.Context;

/**
 * 字符串片段。你可以通过这个接口的函数，为片段中的占位符设值。
 * 
 * 
 */
public interface ISegment
{

	ISegment setAll(Object v);

	/**
	 * 根据对象设置每个插入点的值。
	 * 
	 * @param obj
	 *            可以是 POJO 或者 Map
	 * @return ISegment
	 */
	ISegment setBy(Object obj);

	ISegment set(String key, Object v);

	ISegment add(String key, Object v);

	void clearAll();

	ISegment born();

	ISegment clone();

	boolean contains(String key);

	Set<String> keys();

	List<Object> values();

	ISegment valueOf(String str);

	void parse(Reader reader);

	CharSequence render();

	CharSequence render(Context context);

	Context getContext();

	void fillNulls(Context context);

	String getOrginalString();

}
